package com.link.base.base.message.dao.mybatis.mapper;

import com.link.base.base.message.model.*;
import com.link.core.basic.dao.mapper.BasicMapper;

import java.util.List;

/**
 *  消息管理 - 移动/WEB端数据展示接入
 * 
 * @author ouyangzhenqiang
 * @date 2018/10/26
 */
public interface MessageMapper extends BasicMapper<Message> {

    /**
     * 更新所有通知为已读
     *
     * @author yrf
     * @date 2018/10/27
     * @param message
     */
    void readAllUpdate(Message message);

    /**
     * 移动端-查询消息各模块的未读数量
     *
     * @author ouyangzhenqiang
     * @date 2018/10/27
     * @param record
     * @return List MessageModuleNum
     * @throws Exception
     */
    List<MessageModuleNum> queryModuleUnReadCount(MessageModuleNum record) throws Exception;

    /**
     * 移动端-获取各消息模块最新一条推送记录内容和时间
     *
     * @author ouyangzhenqiang
     * @date 2018/10/27
     * @param record
     * @return MessageModuleNum
     * @throws Exception
     */
    MessageModuleNum getLastMessageByModule(MessageModuleNum record) throws Exception;

    /**
     * 移动端-根据ID将未读消息更改为已读
     *
     * @author XYQ
     * 2017年10月23日
     * @param record
     * @throws Exception
     */
    void setReadedById(Message record) throws Exception;

    /**
     * 移动端-根据模块将未读消息更改为已读
     *
     * @author XYQ
     * 2017年9月25日
     * @param record
     * @throws Exception
     */
    void setModuleReadedUpdate(Message record) throws Exception;

    /**
     * 移动端-查询每个模块的消息记录数(包含已读和未读)
     *
     * @author XYQ
     * 2017年9月25日
     * @param record
     * @return
     * @throws Exception
     */
    int countByModule(MessageModuleNum record) throws Exception;

    /**
     * 移动端-查询指定模块、指定对象id的记录是否存在
     *
     * @author XYQ
     * 2017年10月12日
     * @param record
     * @return List Message
     * @throws Exception
     */
    List<Message> queryExits(Message record) throws Exception;

    /**
     * 移动端-根据objectID和模块删除一条记录
     *
     * @author XYQ
     * 2017年11月02日
     * @param record
     * @throws Exception
     */
    void deleteByObjectId(Message record) throws Exception;

    /**
     * 移动端-查询任务提醒模块
     *
     * @author XYQ
     * 2017年9月26日
     * @param record
     * @return List MessageTask
     * @throws Exception
     */
    List<MessageTask> queryTaskByExamplePage(MessageModuleNum record) throws Exception;

    /**
     * 移动端-查询订单助手模块
     *
     * @author XYQ
     * 2017年10月16日
     * @param record
     * @return List MessageOrder
     * @throws Exception
     */
    List<MessageOrder> queryOrderByExamplePage(MessageModuleNum record) throws Exception;
    
    /**
     * 移动端-查询订单下产品列表
     * 
     * @author ouyangzhenqiang
     * @date 2018/10/29
     * @param record
     * @return List MessageOrderProduct
     * @throws Exception
     */
    List<MessageOrderProduct> queryMessageOrderMeProductList(MessageOrderProduct record) throws Exception;

    /**
     * 移动端-查询销售周报模块
     *
     * @author XYQ
     * 2017年10月11日
     * @param record
     * @return List Message
     * @throws Exception
     */
    List<Message> queryReportByExamplePage(MessageModuleNum record) throws Exception;

    /**
     * 移动端-查询最新资讯模块
     *
     * @author XYQ
     * 2017年10月23日
     * @param record
     * @return List MessageNews
     * @throws Exception
     */
    List<MessageNews> queryNewsByExamplePage(MessageModuleNum record) throws Exception;

    /**
     * 移动端-查询我的社区评论内容
     *
     * @author XYQ
     * 2017年9月28日
     * @param record
     * @return List MessageComment
     * @throws Exception
     */
    List<MessageComment> queryCommentByExamplePage(MessageModuleNum record) throws Exception;

    /**
     * 移动端-查询我的社区通告内容
     *
     * @author XYQ
     * 2017年10月09日
     * @param record
     * @return List MessageComment
     * @throws Exception
     */
    List<MessageComment> queryNoticeByExamplePage(MessageModuleNum record) throws Exception;

    /**
     * 移动端-查询我的推送消息
     *
     * @author ouyangzhenqiang
     * @date 2018/12/19
     */
    List<Message> queryPushByExamplePage(MessageModuleNum record) throws Exception;

    /**
     * 通过对象Id查询其关联的消息，且为未处理的消息数据
     *
     * @author ouyangzhenqiang
     * @date 2019/07/25 23:28
     */
    List<Message> getUnDealMessageByObjectId(Message record) throws Exception;

    /**
     * 删除消息by Id
     *
     * @author ouyangzhenqiang
     * @date 2019/07/25 23:37
     * @param record
     */
    void delMessageById(Message record) throws Exception;

}
